package Offer014;

import java.util.Arrays;

/**
 * 字符串中的变位词
 * @author 23737
 * @time 2021.12.8
 */
public class Test {
    public static void main(String[] args) {

    }
}

//双指针
class Solution {
    public boolean checkInclusion(String s1, String s2) {
        int n = s1.length();
        int m = s2.length();
        if(n > m){
            return false;
        }
        int[] arrA = new int[26];
        int[] arrB = new int[26];
        for(int i=0; i<n; i++){
            //先将s1中字母出现的次数存到两个矩阵之中
            ++arrA[s1.charAt(i) - 'a'];
            ++arrB[s2.charAt(i) - 'a'];
        }

        if(Arrays.equals(arrA,arrB)){
            return true;
        }
        //先将s2中剩余的字母存在第二个数组中
        //然后再从s2中全部的字母依次从数组二中减去
        for(int i=n; i<m; i++){
            ++arrB[s2.charAt(i) - 'a'];
            --arrB[s2.charAt(i-n) - 'a'];
            //判断两个数组是否是相同的，如果相同返回true
            if(Arrays.equals(arrA,arrB)){
                return true;
            }
        }
        return false;
    }
}